package com.hzit.manager.service.impl;

import java.util.List;

import com.ruoyi.common.core.constant.PortalConstants;
import com.ruoyi.system.api.domain.Content;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import com.hzit.manager.mapper.ContentMapper;
import com.hzit.manager.service.IContentService;

/**
 * 广告管理Service业务层处理
 * 
 * @author wf
 * @date 2024-01-15
 */
@Service
public class ContentServiceImpl implements IContentService 
{
    @Autowired
    private ContentMapper contentMapper;
    @Autowired
    private StringRedisTemplate redisTemplate;

    /**
     * 查询广告管理
     * 
     * @param id 广告管理主键
     * @return 广告管理
     */
    @Override
    public Content selectContentById(Long id)
    {
        return contentMapper.selectContentById(id);
    }

    /**
     * 查询广告管理列表
     * 
     * @param content 广告管理
     * @return 广告管理
     */
    @Override
    public List<Content> selectContentList(Content content)
    {
        return contentMapper.selectContentList(content);
    }

    /**
     * 新增广告管理
     * 
     * @param content 广告管理
     * @return 结果
     */
    @Override
    public int insertContent(Content content)
    {
        return contentMapper.insertContent(content);
    }

    /**
     * 修改广告管理
     * 
     * @param content 广告管理
     * @return 结果
     */
    @Override
    public int updateContent(Content content)
    {
        return contentMapper.updateContent(content);
    }

    /**
     * 批量删除广告管理
     * 
     * @param ids 需要删除的广告管理主键
     * @return 结果
     */
    @Override
    public int deleteContentByIds(Long[] ids)
    {
        return contentMapper.deleteContentByIds(ids);
    }

    /**
     * 删除广告管理信息
     * 
     * @param id 广告管理主键
     * @return 结果
     */
    @Override
    public int deleteContentById(Long id)
    {
        return contentMapper.deleteContentById(id);
    }

    //1. 添加广告时，自动向redis中添加
    @Override
    @CachePut
    public int insert(Content content) {

        return 0;
    }

    @Override
    /**
     * cid: 分类id
     * ids: 广告id列表
     * 数据同步方案一：
     * 缺点：与原代码高度耦合，不利于程序的维护和扩展。
     * 优点：简单
     */
    public int delete(Integer cid,Long[] ids) {
        //1. 从redis中删除商品
        HashOperations<String, String, String> hashOperations = redisTemplate.opsForHash();
        for (Long id : ids) {
            hashOperations.delete(PortalConstants.CONTENT_LIST_PREFIX + cid,id + "");
        }
        //2. 从数据库中也删除此商品
        contentMapper.deleteContentByIds(ids);
        return 0;
    }
}
